#include "Comm.hpp"


class Init
{
public:
    Init()
    {
        int n = mkfifo(gpipepath.c_str(),0600);
        if(n<0)
        {
            std::cerr<<"mkfifo error"<<std::endl;
            return;
        }
        else
        {
            std::cout<<"mkfifo success"<<std::endl;
        }
        return;
    }
    ~Init()
    {
        int n = unlink(gpipepath.c_str());
        if(n<0)
        {
            std::cerr<<"unlink error"<<std::endl;
        }
        else
        {
            std::cout<<"unlink success"<<std::endl;
        }
    }
};

Init n;
class Serve
{
public:
    Serve():_fd(gdefaultfd)
    {


    }

    bool OpenFileForRD()
    {
        // _fd = ::open(gpipepath.c_str(),O_RDONLY);
        // if(_fd<0)
        // {
        //     std::cerr<<"serve open error"<<std::endl;
        //     return false;
        // }
        // return true;
        _fd = OpenFile(read_flags);
        if(_fd<0)
        {
            return false;
        }
        return true;
    }
    bool CloseFileForRD()
    {
        // if(_fd>=0)
        // {
        //     ::close(_fd);
        //     return true;
        // }
        // return false;
        return CloseFile(_fd);
    }

    int RecPipe()
    {
        char buff[SIZE] = {0};
        int n;
        while(true)
        {
            n = ::read(_fd,buff,SIZE-1);
            if(n>0)
            {
                buff[n] = 0;
            }
            else if(n==0)//读端关闭
            {
                break;
            }
            std::cout<<"client say#";
            std::cout<<buff<<std::endl;
        }
        return n;
    }
    ~Serve()
    {

    }
private:
    int _fd;
};
